From: Florian Müllner Date: Tue, 24 Jul 2018 14:40:03 +0000 (+0200) Subject: system: Pick up Settings name and icon from app X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~929^2~4^2~13 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a9ad91c831;p=gnome-shell.git system: Pick up Settings name and icon from app The settings action button in the system menu simply launches gnome-control-center, so we want its icon (and accessible name) to always match the app. So instead of keeping the button in-sync with Settings, just look up that information from the app itself. https://gitlab.gnome.org/GNOME/gnome-shell/issues/433 --- diff --git a/js/ui/status/system.js b/js/ui/status/system.js index 777e95956..81b985c1f 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -261,8 +261,19 @@ var Indicator = new Lang.Class({ item = new PopupMenu.PopupBaseMenuItem({ reactive: false, can_focus: false }); - this._settingsAction = this._createActionButton('preferences-system', _("Settings")); - this._settingsAction.connect('clicked', () => { this._onSettingsClicked(); }); + let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app( + 'gnome-control-center.desktop' + ); + if (app) { + let [icon, name] = [app.app_info.get_icon().names[0], + app.get_name()]; + this._settingsAction = this._createActionButton(icon, name); + this._settingsAction.connect('clicked', + this._onSettingsClicked().bind(this)); + } else { + log('Missing required core component Settings, expect trouble…'); + this._settingsAction = new St.Widget(); + } item.actor.add(this._settingsAction, { expand: true, x_fill: false }); this._orientationLockAction = this._createActionButton('', _("Orientation Lock")); @@ -330,8 +341,7 @@ var Indicator = new Lang.Class({ _onSettingsClicked() { this.menu.itemActivated(); - let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop'); Main.overview.hide(); - app.activate(); + this._settingsApp.activate(); } });